/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.reporte.accion;

import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.persistence.EntityManager;
import org.reporte.control.Conexion;

/**
 *
 * @author 43579648
 */
@ManagedBean
@ApplicationScoped
public class CacheCorrelativoIdentificador {

    private final String SELECT_NEXT_ID = "SELECT (MAX(e.id) + 1) FROM entity e";
    private EntityManager em = Conexion.getEntityManager();
    private Integer idDatoParametroReporte;
    private Integer idConexion;
    private Integer idDatoConexion;


    private Integer obtenerSiguienteIdDatoParametroReporte() throws Exception{
        try{
            Integer i = 0;
            i = (Integer) em.createQuery(SELECT_NEXT_ID.replace("id", "idDatoParametroReporte").replace("entity", "DatoParametroReporte")).getSingleResult();
            if(i == null||i == 0)
                i = 1;
            return i;
        }catch(Exception e){
            throw e;
        }
    }

    private Integer obtenerSiguienteIdConexion() throws Exception{
        try{
            Integer i = 0;
            i = (Integer) em.createQuery(SELECT_NEXT_ID.replace("id", "idConexion").replace("entity", "Conexion")).getSingleResult();
            if(i == null||i == 0)
                i = 1;
            return i;
        }catch(Exception e){
            throw e;
        }
    }

        private Integer obtenerSiguienteIdDatoConexion() throws Exception{
        try{
            Integer i = 0;
            i = (Integer) em.createQuery(SELECT_NEXT_ID.replace("id", "idConexion").replace("entity", "Conexion")).getSingleResult();
            if(i == null||i == 0)
                i = 1;
            return i;
        }catch(Exception e){
            throw e;
        }
    }

    public Integer getIdDatoParametroReporte() throws Exception {
        if(idDatoParametroReporte==null)
            idDatoParametroReporte = obtenerSiguienteIdDatoParametroReporte();
        else
            idDatoParametroReporte += 1;
        return idDatoParametroReporte;
    }

    public Integer getIdConexion() throws Exception {
        if(idDatoParametroReporte==null)
            idConexion = obtenerSiguienteIdConexion();
        else
            idConexion += 1;
        return idConexion;
    }


    public Integer getIdDatoConexion() throws Exception {
        if(idDatoConexion==null)
            idDatoConexion = obtenerSiguienteIdDatoConexion();
        else
            idDatoConexion += 1;
        return idDatoConexion;
    }





}
